//入口文件
//import Vue from 'vue'
import Vue from '../node_modules/vue/dist/vue.js'

//使用 vuex
import Vuex from 'vuex'
//注册 vuex 到 vue 中
Vue.use(Vuex)

//获取存储的 car 数据
let carList = JSON.parse(localStorage.getItem('car') || "[]")

// 创建新的Vuex.store
var store = new Vuex.Store({
    state: { //相当于 data。专门存放数据:this.$store.state.名称
        car: carList, //购物车中商品数据，用数组存储
    },
    mutations: { //this.$store.commit('方法名', 参数)
        addToCar(state, goodsInfo){
            //把商品信息添加到 state.car 中:
            //1. 如果有这个商品，只更新数目
            let flag = false; // 设置是否存在这个商品的flag
            state.car.some(item => {
                if(item.id == goodsInfo.id){
                    item.count += parseInt(goodsInfo.count)
                    flag = true
                    return true
                }
            })
            
            //2. 没有这个商品，push
            if(!flag){
                state.car.push(goodsInfo)
            }

            //更新car之后，把数据保存在 本地存储 中
            localStorage.setItem('car', JSON.stringify(state.car))

        },
    },
    getters:{ //相当于计算属性，或者过滤器的功能：this.$store.getters.名称
        getAllCount(state){
            let allCount = 0;
            state.car.forEach(item => {
                allCount += item.count
            })
            return allCount
        },
        getGoodsCount(state){
            let o = {}
            state.car.forEach(item => {
                o[item.id] = item.count
            })
            return o
        }
    }
})

//导入路由
import VueRouter from 'vue-router'
//启用路由
Vue.use(VueRouter)
//导入自己的router路由模块
import router from './router'

//导入 vue-resource
import VueResource from 'vue-resource'
//启用 vue-resource
Vue.use(VueResource)
//设置根请求路径
Vue.http.options.root = 'http://www.liulongbin.top:3005';
//设置post数据为表单json数据
Vue.http.options.emulateJSON = true;


//导入 MUI 样式
import './lib/mui/css/mui.min.css'
import './lib/mui/css/icons-extra.css'

//按需导入 mint-UI 中的组件
import { Header, Swipe, SwipeItem, Button, Lazyload, Switch} from 'mint-ui'
Vue.component(Header.name, Header)
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Button.name, Button);
Vue.use(Lazyload);
Vue.component(Switch.name, Switch);
import 'mint-ui/lib/style.css'

//导入vue-preview（图片预览插件）
import VuePreview from 'vue-preview'
Vue.use(VuePreview)

//导入app
import app from './App.vue'

//导入 moment 时间格式化插件
import moment from 'moment'
//定义全局过滤器
Vue.filter('dateFormat', function(dateStr, pattern="YYYY-MM-DD HH:mm:ss"){
    return moment(dateStr).format(pattern)
})

var vm = new Vue({
    el: '#app',
    data: {},
    render: c => c(app),
    router,
    store
})